/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 *
 * @author Andrés
 */
public class Tablespace {

    private List<DiaTablespace> historial;
    private String nombre;
    private int rango;
    private float usadoMB;
    private float libreMB;

    public List<DiaTablespace> getHistorial() {
        return historial;
    }

    public void setHistorial(List<DiaTablespace> historial) {
        this.historial = historial;
    }

    public float getUsadoMB() {
        return usadoMB;
    }

    public void setUsadoMB(float usadoMB) {
        this.usadoMB = usadoMB;
    }

    public float getLibreMB() {
        return libreMB;
    }

    public void setLibreMB(float libreMB) {
        this.libreMB = libreMB;
    }

    public Tablespace() {
    }

    public Tablespace(String nombre) {
        historial = new ArrayList<>();
        this.nombre = nombre;
        this.rango = 70;
    }

    public void agregarDia(DiaTablespace diaTablespace) {
        if (!diaExistente(diaTablespace.getFecha())) {
            this.historial.add(diaTablespace);
        }
    }

    public DiaTablespace getDiaTablespace(String fecha) {
        int index = 0;
        for (DiaTablespace d : historial) {
            if (d.getFecha().equals(fecha)) {
                return historial.get(index);
            }
            index++;
        }

        return null;
    }

    public List<DiaTablespace> getListaDiaTablespace() {
        return historial;
    }

    public void setLibre(int dia, int libre) {
        this.historial.get(dia).setLibre(libre);
    }

    public void setLibre(String dia, int libre) {
        getDiaTablespace(dia).setLibre(libre);
    }

    public int cantidadDias() {
        return this.historial.size();
    }

    public void setPrctjLibre(int dia, float pctj) {
        this.historial.get(dia).setPctj_libre(pctj);
    }

    public float getPrctjLibre(int dia) {
        return this.historial.get(dia).getPctj_libre();
    }

    public void setPrctjLibre(String dia, float pctj) {
        getDiaTablespace(dia).setPctj_libre(pctj);
    }

    public float getPrctjLibre(String dia) {
        return getDiaTablespace(dia).getPctj_libre();
    }

    public void setTamanoTotal(int dia, int tamanoTotal) {
        this.historial.get(dia).setTamanoTotal(tamanoTotal);
    }

    public void setTamanoTotal(String dia, int tamanoTotal) {
        getDiaTablespace(dia).setTamanoTotal(tamanoTotal);
    }

    public int getLibre(int dia) {
        return this.historial.get(dia).getLibre();
    }

    public int getLibre(String dia) {
        return getDiaTablespace(dia).getLibre();
    }

    public void setUsado(int dia, int usado) {
        this.historial.get(dia).setUsado(usado);
    }

    public void setUsado(String fecha, int usado) {
        getDiaTablespace(fecha).setUsado(usado);
    }

    public int getUsado(String dia) {
        return getDiaTablespace(dia).getUsado();
    }

    public int getUsado(int dia) {
        return this.historial.get(dia).getUsado();
    }

    public int getTamanoTotal(int dia) {
        return this.historial.get(dia).getTamanoTotal();
    }

    public DiaTablespace getDiaTablespace(int dia) {
        System.out.println(nombre);
        try {
            return this.historial.get(dia);
        } catch (Exception ex) {
            return getDiaTablespace(dia - 1);
        }
    }

    public void agregarInfoDiaTablespace(String fecha, Float prctjLibre, int usado, int libre) {
        if (getDiaTablespace(fecha) == null) {
            agregarDia(new DiaTablespace(fecha));
        }
        getDiaTablespace(fecha).setPctj_libre(prctjLibre);
        getDiaTablespace(fecha).setLibre(libre);
        getDiaTablespace(fecha).setUsado(usado);
        getDiaTablespace(fecha).setTamanoTotal(usado + libre);
    }

    public boolean diaExistente(String fecha) {
        for (DiaTablespace dt : historial) {
            if (dt.getFecha().equals(fecha)) {
                return true;
            }
        }
        return false;
    }

    @Override
    public String toString() {
        return this.nombre;
    }

    public String getNombre() {
        return nombre;
    }

    public String getUltimaFecha() {
        String ultimaF = historial.get(historial.size() - 1).getFecha();
        System.out.println(ultimaF);
        return ultimaF;
    }

    public List<String> obtenerFechas() {
        ArrayList<String> dias = new ArrayList<>();
        for (DiaTablespace dia : historial) {
            dias.add(dia.getFecha());
        }
        return dias;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Tablespace other = (Tablespace) obj;
        if (!Objects.equals(this.nombre, other.nombre)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 53 * hash + Objects.hashCode(this.nombre);
        return hash;
    }

    /**
     * @return the rango
     */
    public int getRango() {
        return rango;
    }

    /**
     * @param rango the rango to set
     */
    public void setRango(int rango) {
        this.rango = rango;
    }
}
